In [10]:
import pandas as pd
import numpy as np
import scipy as sp
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
In [11]:
df = pd.read_csv("../data/brazil_gdp_inflation_ir.csv", dtype={'Time':np.int32, 'GDP':np.float64, 'Inflation':np.float64, 'Interest':np.float64}, index_col="Time")
In [12]:
df['RInterest'] = df.Interest - df.Inflation
brazil = df.sort()
brazil
Out[12]:
In [13]:
filter = brazil.Inflation < 11.0
sns.set(style="darkgrid")
plt.title(u"PIB vs Inflação até faixa de 10%")
ax = sns.regplot(brazil[filter].Inflation, brazil[filter].GDP, robust=True, n_boot=500)
ax.set_xlabel(u"Inflação")
ax.set_ylabel(u"PIB")
Out[13]:
In [14]:
sns.coefplot("GDP ~ Inflation", data=brazil)
Um estudo recente [4] aponta para a falta de evidências nas explicações frequentemente fornecidas para que as taxas de juros no Brasil precisem ser tão altas e por tão longo tempo e sugerem:
Hence a wise central bank should consider "testing" the market to make sure it is not dealing with an extreme equilibrium configuration or a long standing disequilibrium.
Inpirado pelos 4 estudos citados até aqui resolvemos verificar a correlação entre taxas de juros e inflação nos patamares de até 10%.
In [15]:
filter = brazil.Inflation < 11.0
color = sns.color_palette()[2]
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
f.set_figwidth(12)
sns.regplot(brazil[filter].Interest, brazil[filter].Inflation, robust=True, n_boot=500, ax=ax1)
sns.regplot(brazil[filter].RInterest, brazil[filter].Inflation, robust=True, n_boot=500, ax=ax2).set_ylabel("")
ax1.set_xlabel(u"Taxa de juros nominal")
ax2.set_xlabel(u"Taxa de juros real")
ax1.set_ylabel(u"Inflação")
f.tight_layout()
Note inflação correlaciona positivamente com taxa de juros, porém isso se explica pelo fato de se subir os juros quando se entende que inflação está elevada. Alega-se em geral que variações nas taxas de juros levam ao menos 6 meses para atuarem sobre o mercado, assim nas próximas seções fazemos um shift de um e dois anos sobre a taxa de juros.
In [29]:
f = plt.figure()
l1, = plt.plot(brazil[filter].index, brazil[filter].Interest, figure=f, label=u"Tx juros nominal")
l2, = plt.plot(brazil[filter].index, brazil[filter].Inflation, figure=f, label=u"Inflação")
l3, = plt.plot(brazil[filter].index, brazil[filter].RInterest, figure=f, label=u"Tx juros real")
f.legend(handles=[l1,l2,l3], labels=[u"Tx juros nominal",u"Inflação", u"Tx juros real"])
plt.title(u"Gráfico da série histórica analisada")
f.tight_layout()
In [17]:
brazil[filter].describe()
Out[17]:
Shift de um ano na taxa de juros.
In [18]:
brazil_ir_s1 = brazil.copy()
brazil_ir_s1.Interest = brazil.Interest.shift(1)
brazil_ir_s1.RInterest = brazil.RInterest.shift(1)
Sanity check
In [19]:
brazil_ir_s1[brazil_ir_s1.Inflation < 11]
Out[19]:
In [20]:
filter = brazil_ir_s1.Inflation < 11
color = sns.color_palette()[2]
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
f.set_figwidth(12)
sns.regplot(brazil_ir_s1[filter].Interest, brazil_ir_s1[filter].Inflation, robust=True, n_boot=500, ax=ax1)
sns.regplot(brazil_ir_s1[filter].RInterest, brazil_ir_s1[filter].Inflation, robust=True, n_boot=500, ax=ax2).set_ylabel("")
ax1.set_xlabel(u"Taxa de juros nominal do ano anterior")
ax2.set_xlabel(u"Taxa de juros real do ano anterior")
ax1.set_ylabel(u"Inflação")
f.tight_layout()
In [25]:
sns.coefplot("Inflation ~ RInterest", data=brazil_ir_s1)
In [21]:
brazil_ir_s1[filter].describe()
Out[21]:
Note que a não há evidência estatística de que taxas de juros maiores provocaram redução da inflação no ano seguinte!
Talvez os efeitos da taxas de juros no Brasil sejam meio retardados... :-) Vamos verificar para 2 anos de diferença
In [22]:
brazil_ir_s2 = brazil.copy()
brazil_ir_s2.Interest = brazil.Interest.shift(2)
brazil_ir_s2.RInterest = brazil.RInterest.shift(2)
In [23]:
filter = brazil_ir_s2.Inflation < 11
sns.set(style="darkgrid")
color = sns.color_palette()[2]
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
f.set_figwidth(12)
sns.regplot(brazil_ir_s2[filter].Interest, brazil_ir_s2[filter].Inflation, robust=True, n_boot=500, ax=ax1)
sns.regplot(brazil_ir_s2[filter].RInterest, brazil_ir_s2[filter].Inflation, robust=True, n_boot=500, ax=ax2).set_ylabel("")
ax1.set_xlabel(u"Taxa de juros nominal de dois anos antes")
ax2.set_xlabel(u"Taxa de juros real de dois anos antes")
ax1.set_ylabel(u"Inflação")
f.tight_layout()
In [26]:
sns.coefplot("Inflation ~ RInterest", data=brazil_ir_s2)
In [24]:
brazil_ir_s2[filter].describe()
Out[24]:
Note que a não há evidência estatística de que taxas de juros maiores tenham provocado redução da inflação dois anos após!
Work in progress
In [ ]:
In [ ]: